home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-10-14 | 41.5 KB | 1,700 lines |
- Apply this patch to update an 8.6.1 sendmail to 8.6.2.
-
- *** RELEASE_NOTES.OLD Sat Oct 9 08:04:28 1993
- --- RELEASE_NOTES Fri Oct 15 09:00:07 1993
- ***************
- *** 1,3 ****
- --- 1,49 ----
- + 8.6.2/8.6.2 93/10/15
- + Put a "successful delivery" message in the transcript for
- + addresses that get return-receipts.
- + Put a prominent "this is only a warning" message in warning
- + messages -- some people don't read carefully enough
- + and end up sending the message several times.
- + Include reason for temporary failure in the "warning" return
- + message. Currently, it just says "cannot send for
- + four hours".
- + Fix the "Original message received" time generated for
- + returntosender messages. It was previously listed as
- + the current time. Bug reported by Eric Hagberg of
- + Cornell University Medical College.
- + If there is an error when writing the body of a message,
- + don't send the trailing dot and wait for a response
- + in sender SMTP, as this could cause the connection to
- + hang up under some bizarre circumstances. From Eric
- + Wassenaar.
- + Fix some server SMTP synchronization problems caused when
- + connections fail during message collection. From
- + Eric Wassenaar.
- + Fix a problem that can cause srvrsmtp to reject mail if the
- + name server is down -- it accepts the RCPT but rejects
- + the DATA command. Problem reported by Jim Murray of
- + Stratus.
- + Fix a problem that can cause core dumps if the config file
- + incorrectly resolves to a null hostname. Reported by
- + Allan Johannesen of WPI.
- + Non-root use of -C flag, dangerous -f flags, and use of -oQ
- + by non-root users were not put into
- + X-Authentication-Warning:s as intended because the
- + config file hadn't set the PrivacyFlags yet. Fix
- + from Sven-Ove Westberg of the University of Lulea.
- + Under very odd circumstances, the alias file rebuild code
- + could get confused as to whether a database was
- + open or not.
- + Check "vendor code" on the end of V lines -- this is
- + intended to provide a hook for vendor-specific
- + configuration syntax. (This is a "new feature",
- + but I've made an exception to my rule in a belief
- + that this is a highly exceptional case.)
- + Portability fixes for DG/UX (from Douglas Anderson of NCSC),
- + SCO Unix (from Murray Kucherawy), A/UX, and OSF/1
- + (from Jon Forrest of UC Berkeley)
- + CONFIG: fix ``mailer:host'' form of UUCP relay naming.
- +
- 8.6.1/8.6 93/10/08
- Portability fixes for A/UX and Encore UMAX V.
- Fix error message handling -- if you had a name server down
- *** cf/m4/proto.m4.OLD Thu Oct 14 09:16:38 1993
- --- cf/m4/proto.m4 Fri Oct 15 08:35:24 1993
- ***************
- *** 34,40 ****
- #
- divert(0)
-
- ! VERSIONID(`@(#)proto.m4 8.18 (Berkeley) 10/2/93')
-
- MAILER(local)dnl
-
- --- 34,40 ----
- #
- divert(0)
-
- ! VERSIONID(`@(#)proto.m4 8.19 (Berkeley) 10/15/93')
-
- MAILER(local)dnl
-
- ***************
- *** 574,586 ****
- ifdef(`_NO_UUCP_', `dnl',
- `# resolve remotely connected UUCP links (if any)
- ifdef(`_CLASS_V_',
- ! `R$* < @ $=V . UUCP > $* $: $>_SET_95_ < $V > <@ $V> : $1 @ $2.UUCP $3',
- `dnl')
- ifdef(`_CLASS_W_',
- ! `R$* < @ $=W . UUCP > $* $: $>_SET_95_ < $W > <@ $W> : $1 @ $2.UUCP $3',
- `dnl')
- ifdef(`_CLASS_X_',
- ! `R$* < @ $=X . UUCP > $* $: $>_SET_95_ < $X > <@ $X> : $1 @ $2.UUCP $3',
- `dnl')')
-
- # resolve fake top level domains by forwarding to other hosts
- --- 574,586 ----
- ifdef(`_NO_UUCP_', `dnl',
- `# resolve remotely connected UUCP links (if any)
- ifdef(`_CLASS_V_',
- ! `R$* < @ $=V . UUCP > $* $: $>_SET_95_ < $V > $1 <@$2.UUCP> $3',
- `dnl')
- ifdef(`_CLASS_W_',
- ! `R$* < @ $=W . UUCP > $* $: $>_SET_95_ < $W > $1 <@$2.UUCP> $3',
- `dnl')
- ifdef(`_CLASS_X_',
- ! `R$* < @ $=X . UUCP > $* $: $>_SET_95_ < $X > $1 <@$2.UUCP> $3',
- `dnl')')
-
- # resolve fake top level domains by forwarding to other hosts
- ***************
- *** 598,604 ****
-
- ifdef(`UUCP_RELAY',
- `# forward non-local UUCP traffic to our UUCP relay
- ! R$*<@$*.UUCP>$* $: $>_SET_95_ < $Y > <@ $Y> : $1 @ $2.UUCP $3 uucp mail',
- `ifdef(`_MAILER_uucp_',
- `# forward other UUCP traffic straight to UUCP
- R< @ $+ .UUCP > : $+ $#uucp $@ $1 $: $2 @host.UUCP:...
- --- 598,604 ----
-
- ifdef(`UUCP_RELAY',
- `# forward non-local UUCP traffic to our UUCP relay
- ! R$*<@$*.UUCP>$* $: $>_SET_95_ < $Y > $1 @ <$2.UUCP> $3 uucp mail',
- `ifdef(`_MAILER_uucp_',
- `# forward other UUCP traffic straight to UUCP
- R< @ $+ .UUCP > : $+ $#uucp $@ $1 $: $2 @host.UUCP:...
- *** cf/m4/version.m4.OLD Fri Oct 15 09:01:24 1993
- --- cf/m4/version.m4 Fri Oct 15 08:58:31 1993
- ***************
- *** 32,39 ****
- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- # SUCH DAMAGE.
- #
- ! VERSIONID(`@(#)version.m4 8.6 (Berkeley) 10/5/93')
- #
- divert(0)
- # Configuration version number
- ! DZ8.6
- --- 32,39 ----
- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- # SUCH DAMAGE.
- #
- ! VERSIONID(`@(#)version.m4 8.6.1.2 (Berkeley) 10/15/93')
- #
- divert(0)
- # Configuration version number
- ! DZ8.6.2
- *** src/Makefile.OSF1.OLD Thu Oct 14 06:45:06 1993
- --- src/Makefile.OSF1 Fri Oct 15 08:17:06 1993
- ***************
- *** 5,11 ****
- # old make program (I recommend that you get and port the new make if you
- # are going to be doing any signficant work on sendmail).
- #
- ! # This has been tested on OSF/1 T1.3-4.
- #
-
- # use O=-O (usual) or O=-g (debugging)
- --- 5,11 ----
- # old make program (I recommend that you get and port the new make if you
- # are going to be doing any signficant work on sendmail).
- #
- ! # This has been tested on OSF/1 1.3
- #
-
- # use O=-O (usual) or O=-g (debugging)
- ***************
- *** 38,53 ****
- BINDIR= ${DESTDIR}/usr/sbin
-
- # location of sendmail.st file (usually /var/log or /usr/lib)
- ! STDIR= ${DESTDIR}/var/log
-
- # location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
- ! HFDIR= ${DESTDIR}/usr/share/misc
-
- # additional .o files needed
- OBJADD=
-
- # additional link flags
- ! LDADD= -non_shared
-
- ################### end of user configuration flags ######################
-
- --- 38,53 ----
- BINDIR= ${DESTDIR}/usr/sbin
-
- # location of sendmail.st file (usually /var/log or /usr/lib)
- ! STDIR= ${DESTDIR}/var/adm/sendmail
-
- # location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
- ! HFDIR= ${DESTDIR}/usr/share/lib
-
- # additional .o files needed
- OBJADD=
-
- # additional link flags
- ! LDADD=
-
- ################### end of user configuration flags ######################
-
- ***************
- *** 59,65 ****
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
- ! LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
- BINOWN= root
- BINGRP= kmem
- BINMODE=6555
- --- 59,65 ----
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
- ! LINKS= ${BINDIR}/newaliases ${BINDIR}/mailq
- BINOWN= root
- BINGRP= kmem
- BINMODE=6555
- *** src/READ_ME.OLD Tue Oct 12 15:38:34 1993
- --- src/READ_ME Fri Oct 15 08:35:08 1993
- ***************
- *** 30,36 ****
- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- # SUCH DAMAGE.
- #
- ! # @(#)READ_ME 8.28 (Berkeley) 10/8/93
- #
-
- This directory contains the source files for sendmail.
- --- 30,36 ----
- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- # SUCH DAMAGE.
- #
- ! # @(#)READ_ME 8.29 (Berkeley) 10/15/93
- #
-
- This directory contains the source files for sendmail.
- ***************
- *** 66,72 ****
- --- 66,75 ----
- 2.4.x. THERE IS A BUG IN THE GCC OPTIMIZER THAT CAUSES SENDMAIL TO
- FAIL MISERABLY.
-
- + IMPORTANT: Read the appropriate paragraphs in the section on
- + ``Operating System and Compile Quirks''.
-
- +
- +----------------------+
- | DATABASE DEFINITIONS |
- +----------------------+
- ***************
- *** 359,364 ****
- --- 362,410 ----
- extern int opterr;
- extern int optind;
-
- + A/UX
- + Date: Tue, 12 Oct 1993 18:28:28 -0400 (EDT)
- + From: "Eric C. Hagberg" <hagberg@med.cornell.edu>
- + Subject: Fix for A/UX ndbm
- +
- + I guess this isn't really a sendmail bug, however, it is something
- + that A/UX users should be aware of when compiling sendmail 8.6.
- +
- + Apparently, the calls that sendmail is using to the ndbm routines
- + in A/UX 3.0.x contain calls to "broken" routines, in that the
- + aliases database will break when it gets "just a little big"
- + (sorry I don't have exact numbers here, but it broke somewhere
- + around 20-25 aliases for me.), making all aliases non-functional
- + after exceeding this point.
- +
- + What I did was to get the gnu-dbm-1.6 package, compile it, and
- + then re-compile sendmail with "-lgdbm", "-DNDBM", and using the
- + ndbm.h header file that comes with the gnu-package. This makes
- + things behave properly.
- +
- + I suppose porting the New Berkeley db package is another route,
- + however, I made a quick attempt at it, and found it difficult
- + (not easy at least); the gnu-dbm package "configured" and
- + compiled easily.
- +
- + DG/UX
- + Apparently, /bin/mail doesn't work properly for delivery on
- + DG/UX -- the person who has this working, Douglas Anderson
- + <dlander@afterlife.ncsc.mil>, used procmail instead.
- +
- + Non-DNS based sites
- + This version of sendmail always tries to connect to the Domain
- + Name System (DNS) to resolve names, regardless of the setting
- + of the `I' option. On most systems that are not running DNS,
- + this will fail quickly and sendmail will continue, but on some
- + systems it has a long timeout. If you have this problem, you
- + will have to recompile without NAMED_BIND. Some people have
- + claimed that they have successfully used "OI+USEVC" to force
- + sendmail to use a virtual circuit -- this will always time out
- + quickly, but also tells sendmail that a failed connection
- + should requeue the message (probably not what you intended).
- + A future release of sendmail will correct this problem.
- +
- Both NEWDB and NDBM
- If you use both -DNDBM and -DNEWDB, you must delete the module
- ndbm.o from libdb.a and delete the file "ndbm.h" from the files
- ***************
- *** 434,437 ****
-
- Eric Allman
-
- ! (Version 8.28, last update 10/8/93 16:01:04)
- --- 480,483 ----
-
- Eric Allman
-
- ! (Version 8.29, last update 10/15/93 08:34:06)
- *** src/alias.c.OLD Fri Oct 15 05:40:30 1993
- --- src/alias.c Fri Oct 15 08:35:20 1993
- ***************
- *** 36,42 ****
- # include <pwd.h>
-
- #ifndef lint
- ! static char sccsid[] = "@(#)alias.c 8.16 (Berkeley) 9/25/93";
- #endif /* not lint */
-
-
- --- 36,42 ----
- # include <pwd.h>
-
- #ifndef lint
- ! static char sccsid[] = "@(#)alias.c 8.17 (Berkeley) 10/15/93";
- #endif /* not lint */
-
-
- ***************
- *** 279,289 ****
- ** ALIASWAIT -- wait for distinguished @:@ token to appear.
- **
- ** This can decide to reopen or rebuild the alias file
- */
-
- ! aliaswait(map, ext)
- MAP *map;
- char *ext;
- {
- int atcnt;
- time_t mtime;
- --- 279,303 ----
- ** ALIASWAIT -- wait for distinguished @:@ token to appear.
- **
- ** This can decide to reopen or rebuild the alias file
- + **
- + ** Parameters:
- + ** map -- a pointer to the map descriptor for this alias file.
- + ** ext -- the filename extension (e.g., ".db") for the
- + ** database file.
- + ** isopen -- if set, the database is already open, and we
- + ** should check for validity; otherwise, we are
- + ** just checking to see if it should be created.
- + **
- + ** Returns:
- + ** TRUE -- if the database is open when we return.
- + ** FALSE -- if the database is closed when we return.
- */
-
- ! bool
- ! aliaswait(map, ext, isopen)
- MAP *map;
- char *ext;
- + int isopen;
- {
- int atcnt;
- time_t mtime;
- ***************
- *** 302,308 ****
- {
- auto int st;
-
- ! while (atcnt-- >= 0 &&
- map->map_class->map_lookup(map, "@", NULL, &st) == NULL)
- {
- /*
- --- 316,322 ----
- {
- auto int st;
-
- ! while (isopen && atcnt-- >= 0 &&
- map->map_class->map_lookup(map, "@", NULL, &st) == NULL)
- {
- /*
- ***************
- *** 315,321 ****
-
- map->map_class->map_close(map);
- sleep(30);
- ! map->map_class->map_open(map, O_RDONLY);
- }
- }
-
- --- 329,335 ----
-
- map->map_class->map_close(map);
- sleep(30);
- ! isopen = map->map_class->map_open(map, O_RDONLY);
- }
- }
-
- ***************
- *** 325,331 ****
- if (tTd(27, 3))
- printf("aliaswait: not rebuildable\n");
- map->map_mflags &= ~MF_ALIASWAIT;
- ! return;
- }
- if (stat(map->map_file, &stb) < 0)
- {
- --- 339,345 ----
- if (tTd(27, 3))
- printf("aliaswait: not rebuildable\n");
- map->map_mflags &= ~MF_ALIASWAIT;
- ! return isopen;
- }
- if (stat(map->map_file, &stb) < 0)
- {
- ***************
- *** 332,338 ****
- if (tTd(27, 3))
- printf("aliaswait: no source file\n");
- map->map_mflags &= ~MF_ALIASWAIT;
- ! return;
- }
- mtime = stb.st_mtime;
- (void) strcpy(buf, map->map_file);
- --- 346,352 ----
- if (tTd(27, 3))
- printf("aliaswait: no source file\n");
- map->map_mflags &= ~MF_ALIASWAIT;
- ! return isopen;
- }
- mtime = stb.st_mtime;
- (void) strcpy(buf, map->map_file);
- ***************
- *** 344,350 ****
- --- 358,367 ----
- if (AutoRebuild && stb.st_ino != 0 && stb.st_uid == geteuid())
- {
- message("auto-rebuilding alias database %s", buf);
- + if (isopen)
- + map->map_class->map_close(map);
- rebuildaliases(map, TRUE);
- + isopen = map->map_class->map_open(map, O_RDONLY);
- }
- else
- {
- ***************
- *** 357,362 ****
- --- 374,380 ----
- }
- }
- map->map_mflags &= ~MF_ALIASWAIT;
- + return isopen;
- }
- /*
- ** REBUILDALIASES -- rebuild the alias database.
- *** src/collect.c.OLD Thu Oct 14 07:54:22 1993
- --- src/collect.c Fri Oct 15 08:35:10 1993
- ***************
- *** 33,39 ****
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)collect.c 8.4 (Berkeley) 8/6/93";
- #endif /* not lint */
-
- # include <errno.h>
- --- 33,39 ----
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)collect.c 8.5 (Berkeley) 10/15/93";
- #endif /* not lint */
-
- # include <errno.h>
- ***************
- *** 72,77 ****
- --- 72,78 ----
- bool ignrdot = smtpmode ? FALSE : IgnrDot;
- char buf[MAXLINE], buf2[MAXLINE];
- register char *workbuf, *freebuf;
- + bool inputerr = FALSE;
- extern char *hvalue();
- extern bool isheader(), flusheol();
-
- ***************
- *** 245,251 ****
- ** Collect the body of the message.
- */
-
- ! do
- {
- register char *bp = buf;
-
- --- 246,252 ----
- ** Collect the body of the message.
- */
-
- ! for (;;)
- {
- register char *bp = buf;
-
- ***************
- *** 269,278 ****
- fputs("\n", tf);
- if (ferror(tf))
- tferror(tf, e);
- ! } while (sfgets(buf, MAXLINE, InChannel, TimeOuts.to_datablock,
- ! "message body read") != NULL);
-
- readerr:
- if (fflush(tf) != 0)
- tferror(tf, e);
- (void) fsync(fileno(tf));
- --- 270,286 ----
- fputs("\n", tf);
- if (ferror(tf))
- tferror(tf, e);
- ! if (sfgets(buf, MAXLINE, InChannel, TimeOuts.to_datablock,
- ! "message body read") == NULL)
- ! goto readerr;
- ! }
-
- + if (feof(InChannel) || ferror(InChannel))
- + {
- readerr:
- + inputerr = TRUE;
- + }
- +
- if (fflush(tf) != 0)
- tferror(tf, e);
- (void) fsync(fileno(tf));
- ***************
- *** 279,301 ****
- (void) fclose(tf);
-
- /* An EOF when running SMTP is an error */
- ! if ((feof(InChannel) || ferror(InChannel)) && OpMode == MD_SMTP)
- {
- char *host;
-
- host = RealHostName;
- if (host == NULL)
- host = "localhost";
-
- # ifdef LOG
- if (LogLevel > 0 && feof(InChannel))
- syslog(LOG_NOTICE,
- ! "collect: unexpected close on connection from %s, sender=%s: %m\n",
- ! host, e->e_from.q_paddr);
- # endif
- (feof(InChannel) ? usrerr : syserr)
- ! ("451 collect: unexpected close on connection from %s, from=%s",
- ! host, e->e_from.q_paddr);
-
- /* don't return an error indication */
- e->e_to = NULL;
- --- 287,316 ----
- (void) fclose(tf);
-
- /* An EOF when running SMTP is an error */
- ! if (inputerr && OpMode == MD_SMTP)
- {
- char *host;
- + char *problem;
-
- host = RealHostName;
- if (host == NULL)
- host = "localhost";
-
- + if (feof(InChannel))
- + problem = "unexpected close";
- + else if (ferror(InChannel))
- + problem = "I/O error";
- + else
- + problem = "read timeout";
- # ifdef LOG
- if (LogLevel > 0 && feof(InChannel))
- syslog(LOG_NOTICE,
- ! "collect: %s on connection from %s, sender=%s: %m\n",
- ! problem, host, e->e_from.q_paddr);
- # endif
- (feof(InChannel) ? usrerr : syserr)
- ! ("451 collect: %s on connection from %s, from=%s",
- ! problem, host, e->e_from.q_paddr);
-
- /* don't return an error indication */
- e->e_to = NULL;
- ***************
- *** 303,308 ****
- --- 318,325 ----
- e->e_flags |= EF_CLRQUEUE;
-
- /* and don't try to deliver the partial message either */
- + if (InChild)
- + ExitStat = EX_QUIT;
- finis();
- }
-
- *** src/conf.c.OLD Tue Oct 12 06:45:47 1993
- --- src/conf.c Fri Oct 15 08:35:19 1993
- ***************
- *** 33,39 ****
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)conf.c 8.40 (Berkeley) 10/8/93";
- #endif /* not lint */
-
- # include "sendmail.h"
- --- 33,39 ----
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)conf.c 8.41 (Berkeley) 10/15/93";
- #endif /* not lint */
-
- # include "sendmail.h"
- ***************
- *** 756,761 ****
- --- 756,777 ----
- #else
- #if LA_TYPE == LA_SUBR
-
- + #ifdef DGUX
- +
- + #include <sys/dg_sys_info.h>
- +
- + int getla()
- + {
- + struct dg_sys_info_load_info load_info;
- +
- + dg_sys_info((long *)&load_info,
- + DG_SYS_INFO_LOAD_INFO_TYPE, DG_SYS_INFO_LOAD_VERSION_0);
- +
- + return((int) (load_info.one_minute + 0.5));
- + }
- +
- + #else
- +
- getla()
- {
- double avenrun[3];
- ***************
- *** 771,776 ****
- --- 787,793 ----
- return ((int) (avenrun[0] + 0.5));
- }
-
- + #endif /* DGUX */
- #else
- #if LA_TYPE == LA_MACH
-
- ***************
- *** 1191,1196 ****
- --- 1208,1235 ----
-
- #endif
- /*
- + ** DGUX_INET_ADDR -- inet_addr for DG/UX
- + **
- + ** Data General DG/UX version of inet_addr returns a struct in_addr
- + ** instead of a long. This patches things.
- + */
- +
- + #ifdef DGUX
- +
- + #undef inet_addr
- +
- + long
- + dgux_inet_addr(host)
- + char *host;
- + {
- + struct in_addr haddr;
- +
- + haddr = inet_addr(host);
- + return haddr.s_addr;
- + }
- +
- + #endif
- + /*
- ** GETOPT -- for old systems or systems with bogus implementations
- */
-
- ***************
- *** 1341,1347 ****
- #endif
-
- #ifdef HASSTATFS
- ! # if defined(IRIX) || defined(apollo) || defined(_SCO_unix_) || defined(UMAXV)
- # include <sys/statfs.h>
- # else
- # if (defined(sun) && !defined(BSD)) || defined(__hpux) || defined(_CONVEX_SOURCE) || defined(NeXT) || defined(_AUX_SOURCE)
- --- 1380,1386 ----
- #endif
-
- #ifdef HASSTATFS
- ! # if defined(IRIX) || defined(apollo) || defined(_SCO_unix_) || defined(UMAXV) || defined(DGUX)
- # include <sys/statfs.h>
- # else
- # if (defined(sun) && !defined(BSD)) || defined(__hpux) || defined(_CONVEX_SOURCE) || defined(NeXT) || defined(_AUX_SOURCE)
- ***************
- *** 1381,1387 ****
- # if defined(HASUSTAT)
- if (stat(dir, &statbuf) == 0 && ustat(statbuf.st_dev, &fs) == 0)
- # else
- ! # if defined(IRIX) || defined(apollo) || defined(UMAXV)
- if (statfs(dir, &fs, sizeof fs, 0) == 0)
- # else
- # if defined(ultrix)
- --- 1420,1426 ----
- # if defined(HASUSTAT)
- if (stat(dir, &statbuf) == 0 && ustat(statbuf.st_dev, &fs) == 0)
- # else
- ! # if defined(IRIX) || defined(apollo) || defined(UMAXV) || defined(DGUX)
- if (statfs(dir, &fs, sizeof fs, 0) == 0)
- # else
- # if defined(ultrix)
- ***************
- *** 1686,1689 ****
- --- 1725,1745 ----
- if (ConfFile != NULL)
- return ConfFile;
- return _PATH_SENDMAILCF;
- + }
- + /*
- + ** SETVENDOR -- process vendor code from V configuration line
- + **
- + ** Parameters:
- + ** vendor -- string representation of vendor.
- + **
- + ** Returns:
- + ** TRUE -- if ok.
- + ** FALSE -- if vendor code could not be processed.
- + */
- +
- + bool
- + setvendor(vendor)
- + char *vendor;
- + {
- + return (strcasecmp(vendor, "Berkeley") == 0);
- }
- *** src/conf.h.OLD Tue Oct 12 06:46:10 1993
- --- src/conf.h Fri Oct 15 08:35:10 1993
- ***************
- *** 31,37 ****
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- ! * @(#)conf.h 8.37 (Berkeley) 10/8/93
- */
-
- /*
- --- 31,37 ----
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- ! * @(#)conf.h 8.38 (Berkeley) 10/15/93
- */
-
- /*
- ***************
- *** 191,197 ****
- --- 191,216 ----
- # endif
- #endif
-
- + /*
- + ** DG/UX 5.4.2
- + */
-
- + #ifdef DGUX
- + # define SYSTEM5 1
- + # define LA_TYPE LA_SUBR
- + # define HASSTATFS 1 /* has the statfs(2) syscall */
- + # define HASSETREUID 1 /* has setreuid(2) call */
- + # define HASUNAME 1 /* use System V uname(2) system call */
- + # define HASSETSID 1 /* has Posix setsid(2) call */
- + # define HASINITGROUPS 1 /* has initgroups(3) call */
- + # define HASSETVBUF 1 /* we have setvbuf(3) in libc */
- + # undef IDENTPROTO /* TCP/IP implementation is broken */
- + # undef SETPROCTITLE
- + # define inet_addr dgux_inet_addr
- + extern long dgux_inet_addr();
- + #endif
- +
- +
- /*
- ** Digital Ultrix 4.2A or 4.3
- **
- ***************
- *** 302,308 ****
- # define HASSTATFS 1 /* has the statfs(2) syscall */
- # define FORK fork
- # define MAXPATHLEN PATHSIZE
- ! # define LA_TYPE LA_ZERO
- #endif
-
-
- --- 321,327 ----
- # define HASSTATFS 1 /* has the statfs(2) syscall */
- # define FORK fork
- # define MAXPATHLEN PATHSIZE
- ! # define LA_TYPE LA_SHORT
- #endif
-
-
- ***************
- *** 385,390 ****
- --- 404,410 ----
- # define HASUSTAT 1 /* use System V ustat(2) syscall */
- # define HASSETVBUF 1 /* we have setvbuf(3) in libc */
- # define SIGFUNC_DEFINED /* sigfunc_t already defined */
- + # undef IDENTPROTO /* TCP/IP implementation is broken */
- # define FORK fork
- # ifndef _PATH_SENDMAILCF
- # define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
- ***************
- *** 457,464 ****
-
- /* general POSIX defines */
- #ifdef _POSIX_VERSION
- ! # define HASSETSID 1 /* has setsid(2) call */
- ! # define HASWAITPID 1 /* has waitpid(2) call */
- #endif
-
- /*
- --- 477,484 ----
-
- /* general POSIX defines */
- #ifdef _POSIX_VERSION
- ! # define HASSETSID 1 /* has Posix setsid(2) call */
- ! # define HASWAITPID 1 /* has Posix waitpid(2) call */
- #endif
-
- /*
- ***************
- *** 497,502 ****
- --- 517,526 ----
- # ifndef EX_CONFIG
- # define EX_CONFIG 78 /* configuration error */
- # endif
- +
- + /* pseudo-code used in server SMTP */
- + # define EX_QUIT 22 /* drop out of server immediately */
- +
-
- /*
- ** These are used in a few cases where we need some special
- *** src/deliver.c.OLD Sat Oct 9 08:05:12 1993
- --- src/deliver.c Fri Oct 15 08:35:18 1993
- ***************
- *** 33,39 ****
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)deliver.c 8.30 (Berkeley) 10/8/93";
- #endif /* not lint */
-
- #include "sendmail.h"
- --- 33,39 ----
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)deliver.c 8.31 (Berkeley) 10/15/93";
- #endif /* not lint */
-
- #include "sendmail.h"
- ***************
- *** 592,597 ****
- --- 592,598 ----
- char rpathbuf[MAXNAME]; /* translated return path */
- extern int checkcompat();
- extern FILE *fdopen();
- + extern char SmtpError[];
-
- errno = 0;
- if (bitset(QDONTSEND|QBADADDR|QQUEUEUP, to->q_flags))
- ***************
- *** 609,614 ****
- --- 610,616 ----
- host = to->q_host;
- CurEnv = e; /* just in case */
- e->e_statmsg = NULL;
- + SmtpError[0] = '\0';
-
- if (tTd(10, 1))
- printf("\n--deliver, mailer=%d, host=`%s', first user=`%s'\n",
- ***************
- *** 719,725 ****
- *pvp = NULL;
- # else /* SMTP */
- /* oops! we don't implement SMTP */
- ! syserr("554 SMTP style mailer");
- return (EX_SOFTWARE);
- # endif /* SMTP */
- }
- --- 721,727 ----
- *pvp = NULL;
- # else /* SMTP */
- /* oops! we don't implement SMTP */
- ! syserr("554 SMTP style mailer not implemented");
- return (EX_SOFTWARE);
- # endif /* SMTP */
- }
- ***************
- *** 929,934 ****
- --- 931,937 ----
-
- curhost = NULL;
- SmtpPhase = NULL;
- + mci = NULL;
-
- #ifdef XDEBUG
- {
- ***************
- *** 940,946 ****
- }
- #endif
-
- -
- /* check for Local Person Communication -- not for mortals!!! */
- if (strcmp(m->m_mailer, "[LPC]") == 0)
- {
- --- 943,948 ----
- ***************
- *** 971,977 ****
- if (!clever)
- {
- syserr("554 non-clever IPC");
- ! rcode = EX_OSERR;
- goto give_up;
- }
- if (pv[2] != NULL)
- --- 973,979 ----
- if (!clever)
- {
- syserr("554 non-clever IPC");
- ! rcode = EX_CONFIG;
- goto give_up;
- }
- if (pv[2] != NULL)
- ***************
- *** 979,996 ****
- else
- port = 0;
- tryhost:
- - mci = NULL;
- while (*curhost != '\0')
- {
- register char *p;
- static char hostbuf[MAXNAME];
-
- - mci = NULL;
- -
- /* pull the next host from the signature */
- p = strchr(curhost, ':');
- if (p == NULL)
- p = &curhost[strlen(curhost)];
- strncpy(hostbuf, curhost, p - curhost);
- hostbuf[p - curhost] = '\0';
- if (*p != '\0')
- --- 981,1000 ----
- else
- port = 0;
- tryhost:
- while (*curhost != '\0')
- {
- register char *p;
- static char hostbuf[MAXNAME];
-
- /* pull the next host from the signature */
- p = strchr(curhost, ':');
- if (p == NULL)
- p = &curhost[strlen(curhost)];
- + if (p == curhost)
- + {
- + syserr("deliver: null host name in signature");
- + continue;
- + }
- strncpy(hostbuf, curhost, p - curhost);
- hostbuf[p - curhost] = '\0';
- if (*p != '\0')
- ***************
- *** 1038,1053 ****
- printf("openmailer: makeconnection => stat=%d, errno=%d\n",
- i, errno);
-
- -
- /* enter status of this host */
- setstat(i);
- }
- mci->mci_pid = 0;
- #else /* no DAEMON */
- syserr("554 openmailer: no IPC");
- if (tTd(11, 1))
- printf("openmailer: NULL\n");
- ! return NULL;
- #endif /* DAEMON */
- }
- else
- --- 1042,1065 ----
- printf("openmailer: makeconnection => stat=%d, errno=%d\n",
- i, errno);
-
- /* enter status of this host */
- setstat(i);
- +
- + /* should print some message here for -v mode */
- }
- + if (mci == NULL)
- + {
- + syserr("deliver: no host name");
- + rcode = EX_OSERR;
- + goto give_up;
- + }
- mci->mci_pid = 0;
- #else /* no DAEMON */
- syserr("554 openmailer: no IPC");
- if (tTd(11, 1))
- printf("openmailer: NULL\n");
- ! rcode = EX_UNAVAILABLE;
- ! goto give_up;
- #endif /* DAEMON */
- }
- else
- ***************
- *** 1388,1394 ****
- #endif
-
- /* arrange a return receipt if requested */
- ! if (e->e_receiptto != NULL && bitnset(M_LOCALMAILER, m->m_flags))
- {
- e->e_flags |= EF_SENDRECEIPT;
- /* do we want to send back more info? */
- --- 1400,1407 ----
- #endif
-
- /* arrange a return receipt if requested */
- ! if (rcode == EX_OK && e->e_receiptto != NULL &&
- ! bitnset(M_LOCALMAILER, m->m_flags))
- {
- e->e_flags |= EF_SENDRECEIPT;
- /* do we want to send back more info? */
- ***************
- *** 1412,1417 ****
- --- 1425,1436 ----
- {
- to->q_flags |= QSENT;
- e->e_nsent++;
- + if (e->e_receiptto != NULL &&
- + bitnset(M_LOCALMAILER, m->m_flags))
- + {
- + fprintf(e->e_xfp, "%s... Successfully delivered\n",
- + to->q_paddr);
- + }
- }
- }
-
- ***************
- *** 1641,1647 ****
- --- 1660,1672 ----
- */
-
- if (stat == EX_OK || stat == EX_TEMPFAIL)
- + {
- + extern char MsgBuf[];
- +
- message(&statmsg[4], errstring(errno));
- + if (stat == EX_TEMPFAIL && e->e_xfp != NULL)
- + fprintf(e->e_xfp, "%s\n", &MsgBuf[4]);
- + }
- else
- {
- Errors++;
- ***************
- *** 1853,1859 ****
-
- if (ferror(e->e_dfp))
- {
- ! syserr("putbody: read error");
- ExitStat = EX_IOERR;
- }
- }
- --- 1878,1884 ----
-
- if (ferror(e->e_dfp))
- {
- ! syserr("putbody: %s: read error", e->e_df);
- ExitStat = EX_IOERR;
- }
- }
- *** src/main.c.OLD Tue Oct 12 13:18:02 1993
- --- src/main.c Fri Oct 15 08:35:09 1993
- ***************
- *** 39,45 ****
- #endif /* not lint */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)main.c 8.29 (Berkeley) 10/8/93";
- #endif /* not lint */
-
- #define _DEFINE
- --- 39,45 ----
- #endif /* not lint */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)main.c 8.30 (Berkeley) 10/15/93";
- #endif /* not lint */
-
- #define _DEFINE
- ***************
- *** 99,104 ****
- --- 99,105 ----
- /* saved user environment */
- char RealUserName[256]; /* the actual user id on this host */
- char *CommandLineArgs; /* command line args for pid file */
- + bool Warn_Q_option = FALSE; /* warn about Q option use */
-
- /*
- ** Pointers for setproctitle.
- ***************
- *** 136,141 ****
- --- 137,144 ----
- int j;
- bool queuemode = FALSE; /* process queue requests */
- bool safecf = TRUE;
- + bool warn_C_flag = FALSE;
- + char warn_f_flag = '\0';
- static bool reenter = FALSE;
- char *argv0 = argv[0];
- struct passwd *pw;
- ***************
- *** 450,458 ****
-
- case 'C': /* select configuration file (already done) */
- if (RealUid != 0)
- ! auth_warning(CurEnv,
- ! "Processed by %s with -C %s",
- ! RealUserName, optarg);
- ConfFile = optarg;
- (void) setgid(RealGid);
- (void) setuid(RealUid);
- --- 453,459 ----
-
- case 'C': /* select configuration file (already done) */
- if (RealUid != 0)
- ! warn_C_flag = TRUE;
- ConfFile = optarg;
- (void) setgid(RealGid);
- (void) setuid(RealUid);
- ***************
- *** 472,480 ****
- }
- from = newstr(optarg);
- if (strcmp(RealUserName, from) != 0)
- ! auth_warning(CurEnv,
- ! "%s set sender to %s using -%c",
- ! RealUserName, from, j);
- break;
-
- case 'F': /* set full name */
- --- 473,479 ----
- }
- from = newstr(optarg);
- if (strcmp(RealUserName, from) != 0)
- ! warn_f_flag = j;
- break;
-
- case 'F': /* set full name */
- ***************
- *** 617,622 ****
- --- 616,634 ----
- xputs(macvalue('k', CurEnv));
- printf("\n");
- }
- +
- + /*
- + ** Process authorization warnings from command line.
- + */
- +
- + if (warn_C_flag)
- + auth_warning(CurEnv, "Processed by %s with -C %s",
- + RealUserName, ConfFile);
- + if (warn_f_flag != '\0')
- + auth_warning(CurEnv, "%s set sender to %s using -%c",
- + RealUserName, from, warn_f_flag);
- + if (Warn_Q_option)
- + auth_warning(CurEnv, "Processed from queue %s", QueueDir);
-
- /* Enforce use of local time (null string overrides this) */
- if (TimeZoneSpec == NULL)
- *** src/map.c.OLD Thu Oct 14 19:25:28 1993
- --- src/map.c Fri Oct 15 08:35:20 1993
- ***************
- *** 33,39 ****
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)map.c 8.16 (Berkeley) 10/1/93";
- #endif /* not lint */
-
- #include "sendmail.h"
- --- 33,39 ----
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)map.c 8.17 (Berkeley) 10/15/93";
- #endif /* not lint */
-
- #include "sendmail.h"
- ***************
- *** 85,90 ****
- --- 85,92 ----
- */
-
- #define DBMMODE 0644
- +
- + extern bool aliaswait __P((MAP *, char *, int));
- /*
- ** MAP_PARSEARGS -- parse config line arguments for database lookup
- **
- ***************
- *** 423,428 ****
- --- 425,434 ----
- dbm = dbm_open(map->map_file, mode, DBMMODE);
- if (dbm == NULL)
- {
- + #ifdef MAYBENEXTRELEASE
- + if (aliaswait(map, ".pag", FALSE))
- + return TRUE;
- + #endif
- if (!bitset(MF_OPTIONAL, map->map_mflags))
- syserr("Cannot open DBM database %s", map->map_file);
- return FALSE;
- ***************
- *** 429,436 ****
- }
- map->map_db1 = (void *) dbm;
- if (mode == O_RDONLY && bitset(MF_ALIAS, map->map_mflags))
- ! aliaswait(map, ".pag");
- ! if (fstat(dbm_dirfno(dbm), &st) >= 0)
- map->map_mtime = st.st_mtime;
- return TRUE;
- }
- --- 435,443 ----
- }
- map->map_db1 = (void *) dbm;
- if (mode == O_RDONLY && bitset(MF_ALIAS, map->map_mflags))
- ! if (!aliaswait(map, ".pag", TRUE))
- ! return FALSE;
- ! if (fstat(dbm_dirfno((DBM *) map->map_db1), &st) >= 0)
- map->map_mtime = st.st_mtime;
- return TRUE;
- }
- ***************
- *** 621,626 ****
- --- 628,637 ----
- db = dbopen(buf, omode, DBMMODE, DB_BTREE, NULL);
- if (db == NULL)
- {
- + #ifdef MAYBENEXTRELEASE
- + if (aliaswait(map, ".db", FALSE))
- + return TRUE;
- + #endif
- if (!bitset(MF_OPTIONAL, map->map_mflags))
- syserr("Cannot open BTREE database %s", map->map_file);
- return FALSE;
- ***************
- *** 654,660 ****
-
- map->map_db2 = (void *) db;
- if (mode == O_RDONLY && bitset(MF_ALIAS, map->map_mflags))
- ! aliaswait(map, ".db");
- return TRUE;
- }
-
- --- 665,672 ----
-
- map->map_db2 = (void *) db;
- if (mode == O_RDONLY && bitset(MF_ALIAS, map->map_mflags))
- ! if (!aliaswait(map, ".db", TRUE))
- ! return FALSE;
- return TRUE;
- }
-
- ***************
- *** 700,705 ****
- --- 712,721 ----
- db = dbopen(buf, omode, DBMMODE, DB_HASH, NULL);
- if (db == NULL)
- {
- + #ifdef MAYBENEXTRELEASE
- + if (aliaswait(map, ".db", FALSE))
- + return TRUE;
- + #endif
- if (!bitset(MF_OPTIONAL, map->map_mflags))
- syserr("Cannot open HASH database %s", map->map_file);
- return FALSE;
- ***************
- *** 733,739 ****
-
- map->map_db2 = (void *) db;
- if (mode == O_RDONLY && bitset(MF_ALIAS, map->map_mflags))
- ! aliaswait(map, ".db");
- return TRUE;
- }
-
- --- 749,756 ----
-
- map->map_db2 = (void *) db;
- if (mode == O_RDONLY && bitset(MF_ALIAS, map->map_mflags))
- ! if (!aliaswait(map, ".db", TRUE))
- ! return FALSE;
- return TRUE;
- }
-
- ***************
- *** 1185,1195 ****
- struct stat stb;
-
- if (tTd(38, 2))
- ! printf("impl_map_open(%s)\n", map->map_file);
-
- if (stat(map->map_file, &stb) < 0)
- {
- /* no alias file at all */
- return FALSE;
- }
-
- --- 1202,1214 ----
- struct stat stb;
-
- if (tTd(38, 2))
- ! printf("impl_map_open(%s, %d)\n", map->map_file, mode);
-
- if (stat(map->map_file, &stb) < 0)
- {
- /* no alias file at all */
- + if (tTd(38, 3))
- + printf("no map file\n");
- return FALSE;
- }
-
- *** src/readcf.c.OLD Tue Oct 12 14:40:28 1993
- --- src/readcf.c Fri Oct 15 08:35:16 1993
- ***************
- *** 33,39 ****
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)readcf.c 8.12 (Berkeley) 9/5/93";
- #endif /* not lint */
-
- # include "sendmail.h"
- --- 33,39 ----
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)readcf.c 8.13 (Berkeley) 10/15/93";
- #endif /* not lint */
-
- # include "sendmail.h"
- ***************
- *** 70,76 ****
- ** Args specify mailer parameters.
- ** Oxvalue Set option x to value.
- ** Pname=value Set precedence name to value.
- ! ** Vversioncode Version level of configuration syntax.
- ** Kmapname mapclass arguments....
- ** Define keyed lookup of a given class.
- ** Arguments are class dependent.
- --- 70,78 ----
- ** Args specify mailer parameters.
- ** Oxvalue Set option x to value.
- ** Pname=value Set precedence name to value.
- ! ** Vversioncode[/vendorcode]
- ! ** Version level/vendor name of
- ! ** configuration syntax.
- ** Kmapname mapclass arguments....
- ** Define keyed lookup of a given class.
- ** Arguments are class dependent.
- ***************
- *** 98,103 ****
- --- 100,106 ----
- char *q;
- struct rewrite *rwp = NULL;
- char *bp;
- + auto char *ep;
- int nfuzzy;
- char *file;
- bool optional;
- ***************
- *** 205,210 ****
- --- 208,214 ----
- }
-
- /* interpret this line */
- + errno = 0;
- switch (bp[0])
- {
- case '\0':
- ***************
- *** 492,498 ****
- &bp[1]);
- break;
- }
- ! ConfigLevel = atoi(p);
- if (ConfigLevel >= 5)
- {
- /* level 5 configs have short name in $w */
- --- 496,502 ----
- &bp[1]);
- break;
- }
- ! ConfigLevel = strtol(p, &ep, 10);
- if (ConfigLevel >= 5)
- {
- /* level 5 configs have short name in $w */
- ***************
- *** 500,505 ****
- --- 504,520 ----
- if (p != NULL && (p = strchr(p, '.')) != NULL)
- *p = '\0';
- }
- + if (*ep++ == '/')
- + {
- + /* extract vendor code */
- + for (p = ep; isascii(*p) && isalpha(*p); )
- + p++;
- + *p = '\0';
- +
- + if (!setvendor(ep))
- + syserr("invalid V line vendor code: \"%s\"",
- + ep);
- + }
- break;
-
- case 'K':
- ***************
- *** 1022,1027 ****
- --- 1037,1043 ----
- extern time_t convtime();
- extern int QueueLA;
- extern int RefuseLA;
- + extern bool Warn_Q_option;
- extern bool trusteduser();
-
- if (tTd(37, 1))
- ***************
- *** 1334,1340 ****
- else
- QueueDir = newstr(val);
- if (RealUid != 0 && !safe)
- ! auth_warning(e, "Processed from queue %s", QueueDir);
- break;
-
- case 'R': /* don't prune routes */
- --- 1350,1356 ----
- else
- QueueDir = newstr(val);
- if (RealUid != 0 && !safe)
- ! Warn_Q_option = TRUE;
- break;
-
- case 'R': /* don't prune routes */
- *** src/savemail.c.OLD Wed Oct 13 15:49:35 1993
- --- src/savemail.c Fri Oct 15 08:35:15 1993
- ***************
- *** 33,39 ****
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)savemail.c 8.13 (Berkeley) 9/26/93";
- #endif /* not lint */
-
- # include "sendmail.h"
- --- 33,39 ----
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)savemail.c 8.14 (Berkeley) 10/15/93";
- #endif /* not lint */
-
- # include "sendmail.h"
- ***************
- *** 598,604 ****
- ** Output introductory information.
- */
-
- ! sprintf(buf, "The original message was received at %s", arpadate(NULL));
- putline(buf, fp, m);
- expand("from \201_", buf, &buf[sizeof buf - 1], e->e_parent);
- putline(buf, fp, m);
- --- 598,620 ----
- ** Output introductory information.
- */
-
- ! for (q = e->e_parent->e_sendqueue; q != NULL; q = q->q_next)
- ! if (bitset(QBADADDR, q->q_flags))
- ! break;
- ! if (q == NULL)
- ! {
- ! putline(" **********************************************",
- ! fp, m);
- ! putline(" ** THIS IS A WARNING MESSAGE ONLY **",
- ! fp, m);
- ! putline(" ** YOU DO NOT NEED TO RESEND YOUR MESSAGE **",
- ! fp, m);
- ! putline(" **********************************************",
- ! fp, m);
- ! putline("", fp, m);
- ! }
- ! sprintf(buf, "The original message was received at %s",
- ! arpadate(ctime(&e->e_parent->e_ctime)));
- putline(buf, fp, m);
- expand("from \201_", buf, &buf[sizeof buf - 1], e->e_parent);
- putline(buf, fp, m);
- *** src/sendmail.h.OLD Thu Oct 14 07:55:20 1993
- --- src/sendmail.h Fri Oct 15 08:35:14 1993
- ***************
- *** 31,37 ****
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- ! * @(#)sendmail.h 8.23 (Berkeley) 9/25/93
- */
-
- /*
- --- 31,37 ----
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- ! * @(#)sendmail.h 8.24 (Berkeley) 10/15/93
- */
-
- /*
- ***************
- *** 41,47 ****
- # ifdef _DEFINE
- # define EXTERN
- # ifndef lint
- ! static char SmailSccsId[] = "@(#)sendmail.h 8.23 9/25/93";
- # endif
- # else /* _DEFINE */
- # define EXTERN extern
- --- 41,47 ----
- # ifdef _DEFINE
- # define EXTERN
- # ifndef lint
- ! static char SmailSccsId[] = "@(#)sendmail.h 8.24 10/15/93";
- # endif
- # else /* _DEFINE */
- # define EXTERN extern
- ***************
- *** 803,808 ****
- --- 803,809 ----
- EXTERN bool UseErrorsTo; /* use Errors-To: header (back compat) */
- EXTERN bool TryNullMXList; /* if we are the best MX, try host directly */
- EXTERN bool CheckLoopBack; /* check for loopback on HELO packet */
- + EXTERN bool InChild; /* true if running in an SMTP subprocess */
- EXTERN char SpaceSub; /* substitution for <lwsp> */
- EXTERN int PrivacyFlags; /* privacy flags */
- EXTERN char *ConfFile; /* location of configuration file [conf.c] */
- *** src/srvrsmtp.c.OLD Tue Oct 12 06:41:24 1993
- --- src/srvrsmtp.c Fri Oct 15 08:35:15 1993
- ***************
- *** 36,44 ****
-
- #ifndef lint
- #ifdef SMTP
- ! static char sccsid[] = "@(#)srvrsmtp.c 8.16 (Berkeley) 9/30/93 (with SMTP)";
- #else
- ! static char sccsid[] = "@(#)srvrsmtp.c 8.16 (Berkeley) 9/30/93 (without SMTP)";
- #endif
- #endif /* not lint */
-
- --- 36,44 ----
-
- #ifndef lint
- #ifdef SMTP
- ! static char sccsid[] = "@(#)srvrsmtp.c 8.17 (Berkeley) 10/15/93 (with SMTP)";
- #else
- ! static char sccsid[] = "@(#)srvrsmtp.c 8.17 (Berkeley) 10/15/93 (without SMTP)";
- #endif
- #endif /* not lint */
-
- ***************
- *** 113,123 ****
- NULL, CMDERROR,
- };
-
- - bool InChild = FALSE; /* true if running in a subprocess */
- bool OneXact = FALSE; /* one xaction only this run */
-
- - #define EX_QUIT 22 /* special code for QUIT command */
- -
- static char *skipword();
-
- smtp(e)
- --- 113,120 ----
- ***************
- *** 488,494 ****
- e->e_to = p;
- if (!bitset(QBADADDR, a->q_flags))
- {
- ! message("250 Recipient ok");
- nrcpts++;
- }
- else
- --- 485,493 ----
- e->e_to = p;
- if (!bitset(QBADADDR, a->q_flags))
- {
- ! message("250 Recipient ok%s",
- ! bitset(QQUEUEUP, a->q_flags) ?
- ! " (will queue)" : "");
- nrcpts++;
- }
- else
- ***************
- *** 506,512 ****
- message("503 Need MAIL command");
- break;
- }
- ! else if (e->e_nrcpts <= 0)
- {
- message("503 Need RCPT (recipient)");
- break;
- --- 505,511 ----
- message("503 Need MAIL command");
- break;
- }
- ! else if (nrcpts <= 0)
- {
- message("503 Need RCPT (recipient)");
- break;
- *** src/usersmtp.c.OLD Sat Oct 9 08:04:58 1993
- --- src/usersmtp.c Fri Oct 15 08:35:08 1993
- ***************
- *** 36,44 ****
-
- #ifndef lint
- #ifdef SMTP
- ! static char sccsid[] = "@(#)usersmtp.c 8.10 (Berkeley) 9/25/93 (with SMTP)";
- #else
- ! static char sccsid[] = "@(#)usersmtp.c 8.10 (Berkeley) 9/25/93 (without SMTP)";
- #endif
- #endif /* not lint */
-
- --- 36,44 ----
-
- #ifndef lint
- #ifdef SMTP
- ! static char sccsid[] = "@(#)usersmtp.c 8.11 (Berkeley) 10/15/93 (with SMTP)";
- #else
- ! static char sccsid[] = "@(#)usersmtp.c 8.11 (Berkeley) 10/15/93 (without SMTP)";
- #endif
- #endif /* not lint */
-
- ***************
- *** 523,528 ****
- --- 523,538 ----
- (*e->e_putbody)(mci->mci_out, m, e, NULL);
-
- clrevent(ev);
- +
- + if (ferror(mci->mci_out))
- + {
- + /* error during processing -- don't send the dot */
- + mci->mci_errno = EIO;
- + mci->mci_exitstat = EX_IOERR;
- + mci->mci_state = MCIS_ERROR;
- + smtpquit(m, mci, e);
- + return EX_IOERR;
- + }
-
- /* terminate the message */
- fprintf(mci->mci_out, ".%s", m->m_eol);
- *** src/version.c.OLD Sat Oct 9 08:08:26 1993
- --- src/version.c Fri Oct 15 08:35:11 1993
- ***************
- *** 33,39 ****
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)version.c 8.6.1.1 (Berkeley) 10/8/93";
- #endif /* not lint */
-
- ! char Version[] = "8.6.1";
- --- 33,39 ----
- */
-
- #ifndef lint
- ! static char sccsid[] = "@(#)version.c 8.6.1.2 (Berkeley) 10/15/93";
- #endif /* not lint */
-
- ! char Version[] = "8.6.2";
-